package cn.com.hori.cms.service.impl;

import cn.com.hori.cms.dao.ContentRepository;
import cn.com.hori.cms.entities.ContentPublish;
import cn.com.hori.cms.service.ContentService;
import cn.com.hori.cms.utils.UUIDUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 刘艺
 * @date 2018/3/12 10:29
 */
@Service
public class ContentServiceImpl implements ContentService {
    private static Logger logger = LoggerFactory.getLogger(ContentServiceImpl.class);

    @Autowired
    private ContentRepository contentRepository;

    /**
     * 查询 某一个栏目下的所有 文章 分页查询
     *
     * @return 返回文章列表
     */
    @Override
    public List<ContentPublish> getAllContent(String columnId, Integer page, Integer size) {
        PageRequest pageRequest = PageRequest.of(page, size);
//        return contentRepository.findAllByColumnId(columnId, pageRequest);
        return contentRepository.findAllByColumnId(columnId);
    }


    /**
     * 新增或更新文章
     *
     * @param contentPublish 文章实体
     * @return 返回被更新的文章实体
     */
    @Override
    public ContentPublish upadateContent(ContentPublish contentPublish) {
        if (contentPublish.getId() == null) {
            ContentPublish temp1 = contentRepository.findByContentId(contentPublish.getContentId());
            if (temp1 != null) {
                // 没进这里属于新增文章，其他都属于更新
                contentPublish.setContentId(temp1.getContentId());
            }else {
                // 新增文章 设置 文章ID
                contentPublish.setContentId(UUIDUtils.getUUID());
            }
        }
        return contentRepository.save(contentPublish);
    }

    /**
     * 删除文章实体
     *
     * @param contentPublish 被删除的文章实体
     * @return 返回是否成功删除
     */
    @Override
    public boolean delete(ContentPublish contentPublish) {
        if (contentPublish.getId() == null) {
            ContentPublish temp1 = contentRepository.findByContentId(contentPublish.getContentId());
            if (temp1 != null) {
                // 没进这里属于新增文章，其他都属于更新
                contentPublish.setContentId(temp1.getContentId());
            } else {
                return false;
            }
        }
        try {
            contentRepository.delete(contentPublish);
            return true;
        } catch (Exception e) {
            logger.info("数据库操作发生异常： {}", e);
            return false;
        }
    }
}
